<?php

namespace Home\Util;

	class PDFUtil{
		static private $pdfObj = '';

		public function __construct(){
			vendor("tcpdf.tcpdf");
			require_cache(VENDOR_PATH . 'tcpdf/examples/lang/eng.php');

	        //生成PDF操作对象
	        set_time_limit(120);
			self::$pdfObj = new \TCPDF(PDF_PAGE_ORIENTATION, 
				PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
		}

		public function BuildHead($sign = true){
			//设置文件信息
			self::$pdfObj->SetCreator(PDF_CREATOR);
			self::$pdfObj->SetAuthor("广州言青科技有限公司");
			self::$pdfObj->SetTitle("悠客意行");
			self::$pdfObj->SetSubject('Tutorial');
			self::$pdfObj->SetKeywords('车旅, 英国, 旅行');
			$link = 'Hot-line:+44 7708606458';
			$Head = "E-mail:ecgoinguk@163.com \n everything convenient";
			$LOGO = 'logo.png';

			if(!$sign){
				// remove default header/footer
				self::$pdfObj->setPrintHeader(false);
				self::$pdfObj->setPrintFooter(false);

				// set default monospaced font
				self::$pdfObj->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

				// set margins
				self::$pdfObj->SetMargins(PDF_MARGIN_LEFT, 17, PDF_MARGIN_RIGHT);

				// set auto page breaks
				self::$pdfObj->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
				self::$pdfObj->SetFont('droidsansfallback', '');
				// set image scale factor
				self::$pdfObj->setImageScale(PDF_IMAGE_SCALE_RATIO);
				self::$pdfObj->AddPage();
			}else{
		        self::$pdfObj->SetHeaderData($LOGO, 110, 
		        	'Hot-line: '.$link,$Head,
		        	array(160,160,160), array(255,66,66));
		        self::$pdfObj->setFooterData(array(0,0,0), array(100,100,100));

		        self::$pdfObj->setHeaderFont(array('stsongstdlight', '', PDF_FONT_SIZE_MAIN));
		        self::$pdfObj->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

		        self::$pdfObj->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);//设置默认等宽字体

		        self::$pdfObj->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);//设置页面边幅
		        self::$pdfObj->SetHeaderMargin(PDF_MARGIN_HEADER);
		        self::$pdfObj->SetFooterMargin(PDF_MARGIN_FOOTER);
		        self::$pdfObj->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);//设置自动分页符
		        self::$pdfObj->setImageScale(PDF_IMAGE_SCALE_RATIO);
		        self::$pdfObj->SetFont('droidsansfallback', '');
		        self::$pdfObj->AddPage();
			}
		}

		public function BuildTitle($title,$server,$sign = true){
			$html = '<h3 align="center">'.$title.'</h3><br/>';
			$html .= '<table cellpadding="0" cellspacing="1">
			<tr>
				<td><h3 style="width:50px;border-bottom: 0.1px solid #bbb">联系人信息</h3>
				<p>

				    <span>联系人&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[NAME]：'.$server['NAME'].'</span><br>
				    <span>联系方式&nbsp;[Contact]：'.$server['PHONE'].'</span><br>
				    <span>服务车型&nbsp;[SEATS]：'.$server['SEATS'].'</span><br>
				    <span style="color: #0076bd">分派客服&nbsp;[Service]：'.$server['SERVER'].'</span><br>
				    <span style="color: #0076bd">微信&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[WeChat]：'.$server['WECHAT'].'</span><br>
				    <span style="color: #0076bd">手机号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Mobile]：'.$server['MOB'].'</span><br>
				</p></td>';
			if($sign){
				$html .= '<td><img src="/Qrcode.jpg" /></td>';
			}else{
				$html .= '<td></td>';
			}
			$html .= '</tr>
				</table>
				<div style="hight:20px"></div><div style="hight:20px"></div>';
			self::$pdfObj->writeHTML($html, true, false, true, false, '');
	
		}


		public function BuildContext($data){
			$html = '<h3 style="width:50px;border-bottom: 0.1px solid #bbb">行程安排</h3>';

			foreach ($data as $k => $v) {
				if($v['TYPE'] == '接机'){
					$html .= '<p>
					    <span>第'.($k+1).'天：'.$v['DATE'].'</span><br>
					    <span>服务类型&nbsp;&nbsp;[Type of Service]：'.$v['TYPE'].'</span><br>
					    <span>行程&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Journey]：'.$v['JOURNEY'].'</span><br>
					    <span>机场&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Address]：'.$v['ADDRESS'].'</span><br>
					    <span>用车时间&nbsp;&nbsp;[Time]：'.$v['TIME'].'</span><br>
					    <span>航班号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Flight No.]：'.$v['FLIGHTNO'].'</span><br>
					</p>';
				}else{
					$html .= '<p>
					    <span>第'.($k+1).'天：'.$v['DATE'].'</span><br>
					    <span>服务类型&nbsp;&nbsp;[Type of Service]：'.$v['TYPE'].'</span><br>
					    <span>行程&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Journey]：'.$v['JOURNEY'].'</span><br>
					    <span>用车时间&nbsp;&nbsp;[Time]：'.$v['TIME'].'</span><br>
					    <span>出发地址&nbsp;&nbsp;[Address]：'.$v['ADDRESS'].'</span><br>
					</p>';
				}
				
			}
			self::$pdfObj->writeHTML($html, true, false, true, false, '');
			self::$pdfObj->lastPage();
			self::$pdfObj->AddPage();
		}

		public function BuildAIRPORT(){
			$html = '<h3 style="width:50px;border-bottom: 0.1px solid #bbb">服务流程</h3>';
			$html .= '<ol>';
			$html .= '<li>客人登陆公司服务号和淘宝上进行下单(或通过客服手动下单）和付款</li>';
			$html .= '<li>公司接到订单后客服会主动和客人联系，为了保证手机漫游信号和避免司机无法拨通您的国际电话，请客人添加我们微信号。（机场有免费WIFI）</li>';
			$html .= '<li>出行前24小时，客服建立微信群，所属服务地区经理、司机进入服务群（接送机司机提前24小时进入服务群，旺季因调度原因不排除临时换人，会提前通知。）</li>';
			$html .= '<li>客人登陆公司服务号和淘宝上进行下单(或通过客服手动下单）和付款</li>';
			$html .= '<li>司机师傅会提前在机场外等候，收到客人抵达信息后做好准备。在客人海关排队前面约10人时，开车进入等候区。</li>';
			$html .= '<li>司导开始服务后，请客人如有任何问题都在群上讨论，若私下与司导沟通产生任何纠纷，我司将不予负责。</li>';
			$html .= '</ol>';
			$html .= '<div style="hight:20px"></div>';
			$html .= '<p style="font-size: small;">*从客人到达指定上车地点后，服务群上通知时间开始计算。如司导迟到45分钟以上，客人可向司导直接索赔5镑，八座车10镑。如司导迟到超出1.5小时，公司将退还全款。如司导迟到超过2小时，公司退还全款同时将额外支付五座七座500元，八座600元的赔偿金。（因旺季时，机场停车场较难停车，麻烦客人耐心等待，有时候也因前一批客人延误，替补司导跟不上造成约30分钟的迟到，望客人理解，司导将会在群上说明情况。）</p>';

			$html .= '<div style="hight:20px"></div>
			<h3 style="width:50px;border-bottom: 0.1px solid #bbb">费用说明</h3>';
			$html .= '<table cellpadding="0" cellspacing="1">
			<tr>
				<td>
					一、费用包含<ol>
						<li>指定地点与指定机场路程中司机工作费和车辆使用费</li>
						<li>停车费、燃油费、高速费、路桥费、进城费、拥堵费、空驶费、小费</li>
					</ol>
				</td>
				<td>
				二、费用不包含<ol>
						<li>超时费，超公里费</li>
						<li>因变更订单类型、行程、出行时间、人数和行李数等产生的差价费用</li>
						<li>客人餐饮等个人消费用及其他未提及费用</li>
					</ol>
				</td>
			</tr>
				</table>
			<div style="hight:20px"></div>';

			$html .= '三、特色人性化服务<ol>
				<li>接机后客人如需打电话（使用wifi）回家报平安，在可能的情况下，司机能尽量提供手机（或移动网络热点）、手机充电线给客人使用 。</li>
				<li>儿童座椅：儿童座椅，每一个50元起。英国法律规定12岁或135厘米以下的孩童在车内必须使用儿童安全座椅或加高座椅。请客人下单时提前告知小孩年龄和身高，如违反法律，客人也需承担相应责任。</li>
				<li>辅导退税：送机时，如客人需要司机翻译辅导退税和登机，在司机情况允许下，根据时间付司导服务费和停车费150元/小时起。建议客人下单时向客服备注，方便我们为您预留司机的工作时间，以免影响司机与下一个订单衔接。</li>
				<li>协助入住：送达目的地后，如客人/新生入学需司机翻译协助办理入住，在司机情况允许下，有免费停车场的酒店，司机协助服务不加收费用，客人酌情支付英镑小费（建议： 5-10英镑/小时），我们没有强制要求；如酒店没有免费停车场的，客人需承担停车费。</li>
			</ol><div style="hight:20px"></div><div style="hight:20px"></div>';

			$html .= '四、夜间服务收费标准
			<p style="font-size: small;">* 商品的常规服务时段08:00-22:00，如需非常规服务时段服务，请支付夜间服务费，在订单原价基础上另加10镑。</p>
			<div style="hight:20px"></div><div style="hight:20px"></div>';


			$html .= '五、接送机超时超公里收费标准<p style="font-size: small;">
					* 接机：按照机场实际航班信息为准，航班落地后免费等待90分钟，
					超90分钟开始计算等待费用。如在约定服务时间90分钟后，您还没有上车，
					请及时与我们的司导或客服联系。如在约定服务时间90分钟后上车，
					需补交加时费。距离约定接送服务超过120分钟后，
					且我方联系不上您的情况下，系统默认您已经结束本次服务。<br>
					* 送机：约定接车时间后30分钟内，免费等待，
					超过30分钟开始计算等待费用，距离约定接送服务超过60分钟后，
					且我方联系不上您的情况下，系统默认您已经结束本次服务。</p>

					超时等待费用收费标准：150元人民币/小时。<br>如因航班提早或延误到达，导致产生夜间服务，客人需补交夜间服务费100元人民币。
				<div style="hight:20px"></div><div style="hight:20px"></div>';

			$html .= '六、临时订单增改人性化规则<ol>
				<li>客人如用车时间前48小时外修改订单，可提供免费修改服务，客人不需要支付任何额外修改费用；如客人用车时间前48小时内修改订单，造成公司调度产生任何影响，将根据实际情况收取一定修改费用，人性化规则如下： 
					<ol>
						<li>同一订单接送地址不变，临时增加人数或行李数：只要所定车型在不违反英国交规的情况下能坐得下（放得下），我们不另作加收。如客人谎报人数或行李数，与所定的车型不符，若出现车辆坐不下的情况，客人需要担负全责，费用不退；如若总部可以临时增派车辆，要按即时调车费用收取。</li>
						<li>同一订单接/送两个酒店地址或以上（接/送不同航站楼）：需要根据距离情况，每一个地址另加100元起。如二次接机时产生停车费，须由客人承担。</li>
					</ol>
					</li></ol>
				<p style="font-size: small;">* 如临时订单增改满足以上条件，客人不愿支付额外费用，司导有权按原有行程服务。如客人临时将市内接机更改为长途行程（跨市行程），且不愿支付额外费用，司导可免费送客人到当地火车站转乘火车。</p>
				<div style="hight:20px"></div><div style="hight:20px"></div>';

			$html .= '七、接送机订单取消机制
			<p style="font-size: small;">
			* 用车时间前48小时外客人取消订单并通知客服，该项目款项全额退还。<br>
			* 用车时间前48小时至24小时内取消订单，退还该项目款项的50％。<br>
			* 用车时间前24小时内客人取消订单，该项目款项全额不予退还。</p>
			<div style="hight:20px"></div><div style="hight:20px"></div>';

			self::$pdfObj->writeHTML($html, true, false, true, false, '');
			self::$pdfObj->lastPage();
			self::$pdfObj->AddPage();

			$html = '<h3 style="width:50px;border-bottom: 0.1px solid #bbb">温馨提示</h3>
			<ol>
				<li>请客人务必准备国际漫游或国际WiFi，以保证与公司以及司导沟通顺畅</li>
				<li>如出行前24小时内司导没有联系客人，请客人务必联系客服紧急处理。</li>
				<li>服务中出现任何问题，请客人及时在服务群上说明情况并保留证据或直接与客服联系，我们会及时处理。如问题产生7天后客人提出投诉，公司有可能因时间相隔太长难以取证，不能切实保障客人的利益；问题产生15天后客人提出任何投诉，恕公司不能受理。</li>
				<li>如发现司导有私下向客人兜售服务，以及强制消费等不良服务后，请立刻与我们客服联系，我司将介入调查，并进入紧急处理程序。</li>
				<li>旺季（5月1日-10月15日）公司将不接受任何急单，请在出发前36小时外下单。淡季时公司接受急单，提前出发前8小时下单（包车类除外），包车类请提前12小时下单（英国时间22:00-08:00不接单）</li>
			</ol><div style="hight:20px">';

			self::$pdfObj->writeHTML($html, true, false, true, false, ''); 
		}

		public function BuildBUS(){
			$html = '<h3 style="width:50px;border-bottom: 0.1px solid #bbb">服务流程</h3>
				<ol>
					<li>客人登陆公司服务号和淘宝上进行下单(或通过客服手动下单）和付款</li>
					<li>公司接到订单后客服会主动和客人联系，为了保证手机漫游信号和避免司机无法拨通您的国际电话，请客人添加我们微信号。（机场和酒店有免费WIFI）</li>
					<li>出行前24小时，客服建立微信群，所属服务地区经理、司机进入服务群（单日包车司导提前24小时进入服务群，环线包车司导提前5天进群。旺季因调度原因不排除临时换人，客服会提前通知客户。）</li>
					<li>司导会在用车前一天与客人确认上车地点和出发时间，客人如有额外要求请在服务群上提出</li>
					<li>司导准时到达指定上车地点，客人上车</li>
					<li>司导开始服务后，请客人如有任何问题都在群上讨论，若私下与司导沟通产生任何纠纷，我司将不予负责</li>
					<li>司导服务结束后，客人需填写意见服务书，如提出投诉的内容没有出现在服务群或意见服务书上，将造成公司无法核实投诉，恕投诉不予成立</li>
				</ol>';

			$html .= '<h3 style="width:50px;border-bottom: 0.1px solid #bbb">费用说明</h3>';
			$html .= '<table cellpadding="0" cellspacing="1">
			<tr>
				<td>
					一、费用包含<ol>
						<li>司机常规工作10小时工作费和车辆行驶里程数不超过250英里的使用费</li>
						<li>费用包含餐补、停车费、燃油费、高速费、路桥费、进城费、拥堵费、空驶费、小费和住宿补贴。 </li>
					</ol>
				</td>
				<td>
				二、费用不包含<ol>
						<li>景点门票费用</li>
						<li>超时费，超公里费</li>
						<li>车辆上岛或跨海的车辆轮渡费用及船票</li>
						<li>因变更订单类型、行程、出行时间、人数和行李数等产生的差价费用</li>
						<li>客人餐饮等个人消费用及其他未提及费用</li>
					</ol>
				</td>
			</tr>
				</table>
			<div style="hight:20px"></div>';

			$html .= '三、特色人性化服务<ol>
				<li>儿童座椅：儿童座椅，每一个50元起。英国法律规定12岁或135厘米以下的孩童在车内必须使用儿童安全座椅或加高座椅。请客人下单时提前告知小孩年龄和身高，如违反法律，客人也需承担相应责任。</li>
				<li>辅导退税：送机时，如客人需要司机翻译辅导退税和登机，在司机情况允许下，根据时间付司导服务费和停车费150元/小时起。建议客人下单时向客服备注，方便我们为您预留司机的工作时间，以免影响司机与下一个订单衔接。</li>
				<li>协助入住：送达目的地后，在交规允许的情况下，司导可免费为客人办理入住手续。</li>
			</ol>';

			$html .= '四、包车服务超时超公里收费标准<ol>
				<li>司导每天常规工作10小时，超时费/小时：五座车30镑，七座车35镑，九座车40镑，由客人直接支付给司导</li>
				<li>每车每天行驶里程数不超过250英里。</li>
				<li>包车类如司导迟到，结束时间往后顺延，如迟到超出一小时，司导将返还20镑给客人，九座车返还30镑。（如因路上遭遇交通事故并可以通过软件证明，或提前和客人说明情况，将酌情处理）</li>
			</ol><div style="hight:20px"></div><div style="hight:20px"></div>';

			$html .= '五、包车修改机制<ol>
				<li>包车游出发时间默认为9点，如客人需要推迟当日行程出发时间，需提前1.5小时提通知司导，否则按照约定时间开始计算工作时长。如客人需要提早当日行程出发时间，需行程前一天英国时间21:00前通知司导。</li>
				<li>其余修改：
					<ul>
						<li>如在客人用车时间前48小时外修改订单，可提供免费修改服务，客人不需要支付任何额外修改费用；</li>
						<li>如在客人用车时间前48小时内修改订单，造成公司调度产生任何影响，将根据实际情况收取一定修改费用；</li>
						<li>如在客人用车时间前24小时内修改订单，公司将有权收取全额费用；</li>
					</ul>
				</li>
				<li>行程当天修改：在不绕路、司机工作时间和行驶英里限制允许的情况下，司导会尽量配合客人临时修改行程；但若该临时修改的行程不合理，司导有权按原定行程服务，这种情况不属于违约行为。但在产生外地住宿的情况下，如客人临时修改住宿地址，导致司导无法入住原有酒店，客人需支付司导住宿费用。</li>
			</ol><div style="hight:20px"></div><div style="hight:20px"></div>';

			$html .= '六、包车取消机制<ol>
				<li>包车一日游：
					<ul>
						<li>客人用车时间48小时前取消订单并通知客服，该项目款项全额退还；</li>
						<li>用车时间前48小时至24小时内取消订单，退还该项目款项的50％；</li>
						<li>用车时间前24小时内客人取消订单， 该项目款项全额不予退还；</li>
					</ul>
				</li>
				<li>包车多日游：
					<ul>
						<li>客人用车时间7天前取消订单并通知客服，退还该项目款项的80%；</li>
						<li>客人用车时间7天前至48小时外，取消订单并通知客服，退还该项目款项的60%；</li>
						<li>客人用车时间48小时内，取消订单并通知客服，退还该项目款项的40%；</li>
					</ul>
					<p style="font-size: small;">
			* 如客人因被拒签而造成行程无法按时出发，提供合理合法官方证明后，该订单可免费延后，若客人因被拒签而取消订单，退还该项目款项的90%。</p>
				</li>
			</ol><div style="hight:20px"></div><div style="hight:20px"></div>';
			self::$pdfObj->writeHTML($html, true, false, true, false, ''); 
			self::$pdfObj->lastPage();
			self::$pdfObj->AddPage();

			$html = '<h3 style="width:50px;border-bottom: 0.1px solid #bbb">出行前须知</h3>
				<ol>
					<li>请客人务必准备国际漫游或国际WiFi，以保证与公司以及司导沟通顺畅；</li>
					<li>如出行前24小时内司导没有联系客人，请客人务必联系客服紧急处理；</li>
					<li>服务中出现任何问题，请客人及时在服务群上说明情况并保留证据或直接与客服联系，我们会及时处理。如问题产生7天后客人提出投诉，公司有可能因时间相隔太长难以取证，不能切实保障客人的利益；问题产生15天后客人提出任何投诉，恕公司不能受理；</li>
					<li>如发现司导有私下向客人兜售服务，以及强制消费等不良服务后，请立刻与我们客服联系，我司将介入调查，并进入紧急处理程序；</li>
					<li>司导每天工作时间由实际到达客人指定接车地点时开始计算，如司导实际到达酒店比约定时间早，按约定时间为准开始计算；</li>
					<li>遭遇限行区域，需进入限行区域时，将无法提供车辆服务，司导将步行带客人进入；如限行区域附近无法停车，司导将指导客人进入，这种情况不属于违约行为。司导在任何情况下都不会违反英国交规以及法律法规，请客人务必尊重司导安排，如因客人原因造成任何违规，客人需自行负责；</li>
					<li>如因客人原因强制要求司导违反交通规则，情况属实时，司导需向公司总部上报，无论处罚与否，客人需向总部支付预罚款。两个月内，如司导没有得到处罚，公司将会把支付的预罚款费用退给客人；如司导得到处罚，公司将会给客人发违规通知书作为凭证，把收取客人的预罚款交给司导；</li>
					<li>如客人需要将包车没用完的时间顺延到往后的行程使用，或将超出时间抵消到往后行程，需在服务群中征得公司同意并且得到司导确认后才能做此行为，否则客人需正常支付超时费；</li>
				</ol>';

			self::$pdfObj->writeHTML($html, true, false, true, false, ''); 
		}

	    public function FinishOut($fileName){
	    	$showType= 'I';//PDF输出的方式。I，在浏览器中打开；D，以文件形式下载；F，保存到服务器中；S，以字符串形式输出；E：以邮件的附件输出。
	        self::$pdfObj->Output("{$fileName}.pdf", $showType);
	        exit;
	    }
	}
